package net.example.lesson4;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.ListIterator;

public class TestLinkedList {
	public static void main(String[] args) {
		List<Integer> arraylist = new ArrayList<Integer>();
		arraylist.add(1);
		arraylist.add(2);
		arraylist.add(6);
		arraylist.add(3);
		arraylist.add(5);
		arraylist.add(0, 10);// 在index=0的位置上插入10
		System.out.println("arraylist里的整数列表为：" + "\n" + arraylist);
		arraylist.add(3, 20);
		System.out.println("arraylist里的整数列表为：" + "\n" + arraylist);

		// 1,LinkedList支持在两端插入和删除操作。
		LinkedList<Object> linkedlist = new LinkedList<Object>(arraylist);// 使用数组列表创建链表
		linkedlist.add(1, "blue");// 在index=1的位子上插入blue
		System.out.println("linkedlist的列表为：" + "\n" + linkedlist);
		linkedlist.removeLast();
		System.out.println("linkedlist的列表为：" + "\n" + linkedlist);
		linkedlist.addFirst("green");
		System.out.println("linkedlist的列表为：" + "\n" + linkedlist);

		// 2,链表支持在中间任意位置增加和删除
		linkedlist.remove(new Integer(1));// 移除元素1
		System.out.println("linkedlist移除后的新列表为：" + "\n" + linkedlist);
		linkedlist.remove(2);// 移除索引2的值
		System.out.println("linkedlist移除后的新列表为：" + "\n" + linkedlist);

		// 3,链表支持双向遍历
		ListIterator<Object> listiterator = linkedlist.listIterator();// 获得列表迭代器，扩展了Iterator接口
		System.out.println("linkedlist向后遍历的结果：");
		while (listiterator.hasNext()) {// 向后遍历
			System.out.print(listiterator.next() + ", ");
		}
		System.out.println();
		System.out.println("linkedlist向前遍历的结果：");
		while (listiterator.hasPrevious()) {// 向前遍历，即倒序遍历
			System.out.print(listiterator.previous() + ", ");
		}
	}
	
	
}
